#include "LireMartiale.h"

#include <sstream>

#include "debugstreams.h"

using namespace std;

LireMartiale::LireMartiale()
  : ptr( &Toutes_armes ), compteur( 0 )
{}

LireMartiale::~LireMartiale()
{}

/**
 * Permet d'écrire la compétence martiale dans le flot désiré. Est
 * utilisé pour l'affichage des compétences martiales dans la feuille
 * de perso.
 *
 * On affiche le nom, ainsi que tous les autres données sur l'arme
 * dans un élément de tableau. Lorsque le nombre decompétences devient
 * important, on sépare le tableau automatiquement.
 *
 * @param i numéro de la compétence martiale à afficher. Si cette
 * compétence possède des "sous-compétences", elles sont
 * automatiquement ajoutées. 
 * @return chaîne de caractère correspondant à la ligne (ou les
 * lignes) du tableau des compétences martiales.
 */
string LireMartiale::operator()( const unsigned int& i )
{
  stringstream ss;
  bool doitCouper( false );

  unsigned int j(i);

  do
    {
      ss << ptr -> at(j);
      j++;
      compteur++;
      doitCouper = (compteur % 50 == 0);
    }
  while(ptr -> at(j - 1) . afficher_suite);

  if ( doitCouper )
    {
      ss << endl << "\\end{tabular*}" << endl;
      ss << "\\begin{tabular*}{14cm}{@{\\extracolsep{\\fill}}"
	 << " l l l l l l l l l}" << endl
	 << "Arme & Poids & Taille & Type & Init. & Tir &"
	 << " Portée & Dégâts PM & Dégâts G \\\\" << endl
	 << "\\hline";
    }

  return ss.str();
}
